home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48_2
/
utility
< prev
next >
Wrap
Text File
|
1995-03-31
|
5KB
|
112 lines
From HP-48@VM1.NoDak.EDU Wed Sep 5 00:12:58 1990
Received: from vm1.NoDak.edu by en.ecn.purdue.edu (5.61/1.27jrs)
id AA17265; Wed, 5 Sep 90 00:12:52 -0500
Message-Id: <9009050512.AA17265@en.ecn.purdue.edu>
Received: from NDSUVM1.BITNET by VM1.NoDak.EDU (IBM VM SMTP R1.2.1MX) with BSMTP id 2517; Wed, 05 Sep 90 00:12:27 CDT
Received: from NDSUVM1.BITNET by NDSUVM1.BITNET (Mailer R2.07) with BSMTP id
2511; Wed, 05 Sep 90 00:12:25 CDT
Date: Wed, 5 Sep 90 00:12:07 CDT
Reply-To: HP-48 - HP-48sx Hand Held System <HP-48@VM1.NoDak.EDU>
Sender: HP-48 - HP-48sx Hand Held System <HP-48@VM1.NoDak.EDU>
From: Juergen Koslowski <koslowj%MATH.KSU.EDU@VM1.NoDak.EDU>
X-To: HP-48@VM1.NoDak.EDU
To: Multiple recipients of list HP-48 <HP-48@NDSUVM1>
Status: OR
Here are some of my HP-28 utility programs, updated for the HP-48SX.
You must have Bill Wickes' ASCII decoder program ASC/-> to turn the strings
into programs after downloading them into your HP-48.
@ ad, run trough ASC\->
%%HP: T(1)A(R)F(.);
"D9D204B2A2B9691DBBF104B02CCD20D2000147174E714313317915D41C913314
1142164808CB2130B663"
@ vv, run trough ASC\->
%%HP: T(1)A(R)F(.);
"D9D2078BF1A3AC19C2A290DA1ED2A2DBBF1FC8C1B2130EA41"
@ pp, run trough ASC\->
%%HP: T(1)A(R)F(.);
"D9D20425D1FA45054450B21307522"
@ as, run trough ASC\->
%%HP: T(1)A(R)F(.);
"D9D2047A20C2A2050000B213076BA1B7FC1ED2A2DBBF13013239150C4232CCD2
0E1000147137179137145142164808CB21301A7F"
BRIEF DESCRIPTION
ad: takes the name of a recallable object from the stack and returns the
object's absolute address; you then can use a peek routine to look at it, and
a poke routine to modify it.
(Strangely enough, I have trouble finding some objects with the built-in
memory browser. I am using an 128K expansion card as merged memory. Maybe
the machine has not yet fully recovered from a big memory crash that required
removal of the batteries. Even port 1, which at that time was used as
independent memory, could no longer be read. Unfortunate consequence: to keep
your back-ups safe, REMOVE THE CARD! :-()
vv: removes the outer angle brackets from a program to save 5 bytes; it expects
a program in stack level 1 (so you can see whether the angle brackets are still
there).
pp: is a version of PUT for programs; it requires a program in stack level 3,
a position in level 1, and an object in level 1. Notice that finding the
position of a certain instruction in a program can get complicated if branches
are involved. It may be necessary to treat certain subprograms first, and
then to move the whole subprogram into the final program.
The main purpose of this utility is to avothing thid expressions of the form
#VWXYZ SYSEVAL
in my programs, I prefer to have the code ZYXWV directly there, which saves
a lot of space. To obtain this code, usually displayed as some Externals
(try to recall pp to the stack -- whoa!), I use the following assembler
as: assembles a single binary integer or a list of binary integers into
code that can be put into (template) programs by pp.
EXAMPLE: to put the code ZYXWV into a position n of a program P, recall a
template for P to the stack, enter the position (where you have some dummy
instruction in the template for P), enter the hex number #VWXYZh on the stack
and execute first as and then pp. Notice, the angle brackest do count when
you determine the position. To enter inline machine code, you probably need
a list of hex numbers as input for as.
Another observation: Have you ever wished to be able to recall the names
of back-up objects to the stack, just like you can recall the names of
ordinary objects by first pressing the quote key (row 3, column 1) and then
the appropriate menu key? Aparently this is not possible, the back-up object is
recalled to the stack, whether you press the quote key or not. In particular,
if you call your archive file AUG21 as suggested in the Manual, you cannot see
the last digit in the menu, and hence you may not remember whether you last
backed up your machine on August 21, or 22 or ...?? There is a strange way out
though: After pressing the Library command (orange up-arrow), and the menu key
to select the port, try this: enter double colons (blue +), move the cursor
one step to the right by pressing the right arrow key, and then hit the
desired menu key, eg., the one displaying AUG2. Your command line will look
like this:
:: :n: AUG21
where n is the port number. Now hit ENTER to get the following display:
: :n: AUG21
You now can PURGE the back-up object, or RECall it. STO produces an error
message "Object In Use". The same error message appears, when you first
recall the object to the stack, then get the funny name as described before,
and then try to PURGE. The copy on the stack provides a pointer to the object
you are about to PURGE, and the machine does not like this. Solution: use
NEWOB after recalling the object. If you now create the funny name, you can
PURGE successfully.
J"urgen Koslowski
Department of Mathematics
Kansas State University
koslowj@math.ksu.edu